package com.cts.rt.model;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
@Table(name = "PROJECT")
public class Project implements Serializable {

	private static final long serialVersionUID = 8352856828905994628L;

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Long id;

	@Column(name = "NAME", nullable = false, length = 255)
	private String name;

	@ManyToOne
	@JoinColumn(name = "CLIENT_ID", nullable = false)
	private Client client;

	@Column(name = "ESA_ID", nullable = false, length = 64)
	private String esaId;

	@Column(name = "TYPE", nullable = false, length = 128)
	private String type;

	@ManyToOne
	@JoinColumn(name = "VERTICAL_ID", nullable = false)
	private Vertical vertical;

	@Column(name = "REVENUE_SPLIT")
	private boolean revenueSplit;

	@Column(name = "REVENUE_SPLIT_PERCENTAGE_IME")
	private Integer revenueSplitPercentageIme;

	@Column(name = "STATE", nullable = false)
	private String state;

	@ManyToOne
	@JoinColumn(name = "DAM_ACCT_MANAGER_ID")
	private Employee damAccountManagerId;

	@Column(name = "ESA_SETUP")
	private boolean esaSetup;

	@Column(name = "ESA_SETUP_CONFIRMED")
	private boolean esaSetupConfirmed;

	@Column(name = "CBC_DOMAIN_TAGGED")
	private boolean cbcDomainTagged;

	@Column(name = "CBC_PULL_THROUGH")
	private boolean cbcPullThrough;

	@Column(name = "CONTRACT_VALUE")
	private double contractValue;

	@Column(name = "PROBABILITY")
	private Integer probability;

	@Temporal(TemporalType.DATE)
	@Column(name = "START_DATE")
	private Date startDate;

	@Temporal(TemporalType.DATE)
	@Column(name = "END_DATE")
	private Date endDate;

	@ManyToOne
	@JoinColumn(name = "DAM_PM")
	private Employee damProjectManager;

	@Column(name = "DAM_PROXY_PM")
	private Employee damProxyPm;

	@Column(name = "CTS_ACCT_MGR")
	private Employee ctsAccountManager;

	@Column(name = "NOTES")
	private String notes;

	@Column(name = "GEO")
	private String geo;

	@Column(name = "COMPETITIVE")
	private boolean competitive;

	@Column(name = "CLIENT_BUDGET")
	private double clientBudget;

	@Column(name = "SYSTEM")
	private String system;

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Client getClient() {
		return client;
	}

	public void setClient(Client client) {
		this.client = client;
	}

	public String getEsaId() {
		return esaId;
	}

	public void setEsaId(String esaId) {
		this.esaId = esaId;
	}

	public String getType() {
		return type;
	}

	public void setType(String type) {
		this.type = type;
	}

	public Vertical getVertical() {
		return vertical;
	}

	public void setVertical(Vertical vertical) {
		this.vertical = vertical;
	}

	public boolean isRevenueSplit() {
		return revenueSplit;
	}

	public void setRevenueSplit(boolean revenueSplit) {
		this.revenueSplit = revenueSplit;
	}

	public Integer getRevenueSplitPercentageIme() {
		return revenueSplitPercentageIme;
	}

	public void setRevenueSplitPercentageIme(Integer revenueSplitPercentageIme) {
		this.revenueSplitPercentageIme = revenueSplitPercentageIme;
	}

	public String getState() {
		return state;
	}

	public void setState(String state) {
		this.state = state;
	}

	public Employee getDamAccountManagerId() {
		return damAccountManagerId;
	}

	public void setDamAccountManagerId(Employee damAccountManagerId) {
		this.damAccountManagerId = damAccountManagerId;
	}

	public boolean isEsaSetup() {
		return esaSetup;
	}

	public void setEsaSetup(boolean esaSetup) {
		this.esaSetup = esaSetup;
	}

	public boolean isEsaSetupConfirmed() {
		return esaSetupConfirmed;
	}

	public void setEsaSetupConfirmed(boolean esaSetupConfirmed) {
		this.esaSetupConfirmed = esaSetupConfirmed;
	}

	public boolean isCbcDomainTagged() {
		return cbcDomainTagged;
	}

	public void setCbcDomainTagged(boolean cbcDomainTagged) {
		this.cbcDomainTagged = cbcDomainTagged;
	}

	public boolean isCbcPullThrough() {
		return cbcPullThrough;
	}

	public void setCbcPullThrough(boolean cbcPullThrough) {
		this.cbcPullThrough = cbcPullThrough;
	}

	public double getContractValue() {
		return contractValue;
	}

	public void setContractValue(double contractValue) {
		this.contractValue = contractValue;
	}

	public Integer getProbability() {
		return probability;
	}

	public void setProbability(Integer probability) {
		this.probability = probability;
	}

	public Date getStartDate() {
		return startDate;
	}

	public void setStartDate(Date startDate) {
		this.startDate = startDate;
	}

	public Date getEndDate() {
		return endDate;
	}

	public void setEndDate(Date endDate) {
		this.endDate = endDate;
	}

	public Employee getDamProjectManager() {
		return damProjectManager;
	}

	public void setDamProjectManager(Employee damProjectManager) {
		this.damProjectManager = damProjectManager;
	}

	public Employee getDamProxyPm() {
		return damProxyPm;
	}

	public void setDamProxyPm(Employee damProxyPm) {
		this.damProxyPm = damProxyPm;
	}

	public Employee getCtsAccountManager() {
		return ctsAccountManager;
	}

	public void setCtsAccountManager(Employee ctsAccountManager) {
		this.ctsAccountManager = ctsAccountManager;
	}

	public String getNotes() {
		return notes;
	}

	public void setNotes(String notes) {
		this.notes = notes;
	}

	public String getGeo() {
		return geo;
	}

	public void setGeo(String geo) {
		this.geo = geo;
	}

	public boolean isCompetitive() {
		return competitive;
	}

	public void setCompetitive(boolean competitive) {
		this.competitive = competitive;
	}

	public double getClientBudget() {
		return clientBudget;
	}

	public void setClientBudget(double clientBudget) {
		this.clientBudget = clientBudget;
	}

	public String getSystem() {
		return system;
	}

	public void setSystem(String system) {
		this.system = system;
	}

}
